关于JUNIT4 中的多线程测试的疑惑

传说junit4可以进行多线程测试,但是我一直没有找到如何使用注解测试,只有把多线程吓到测试用例里面进行测试,但是不测不知道,一测发现一个大问题,呵呵。代码如下

1
2
3
4
5
6
7
8
9
10
11
12
13
@Test
public void hibernatePool() {
ApplicationContext ctx = new ClassPathXmlApplicationContext("test/spring_hibernate.xml");
// 启用线程池,模拟tomcat服务器线程池
ExecutorService sexc = Executors.newFixedThreadPool(100);
for (int i = 0; i < 10000; i++) {
ModelDaoIF dao = (ModelDaoIF) ctx.getBean("SimpleModelDao");
Work work = new HibernatePooxTest().new Work();
work.setDao(dao);
sexc.execute(work);
}
sexc.shutdown();
}

测试结果是在运行到sexc.shutdown();也就是测试用例的最后一行执行完以后以后,线程池里面正在执行的线程也全部关闭掉,注意,这里不是释放线程,而是直接关闭线程池里面的线程,呵呵,奇怪吧,想了许久我猜测是一个测试用例执行完成以后JUNIT4会直接关闭主线程,这样一来的话主线程下的所有操作就全部OVER,不知道我的推测是不是正确的,现在也没有时间去看JUNIT4的源码,以后有时间再去研究研究。如果哪位高手看到这个文章,然后又知道其中原理的话请告之我一声,我的邮箱是[email protected]。如果有其他的解决办法也可以邮件告之一声,小弟不胜感激。最后这个问题我还是没有解决,只有直接写main方法来执行测试了,郁闷啊!

坚持原创技术分享,您的支持将鼓励我继续创作!